#pragma once

#include <iostream>
#include <vector>
#include <ctime>

typedef void (*task_t)();

/////////////////dubug///////////////////////////////
void PrintLog()
{
    std::cout << "我是一个打印日志的任务" << std::endl;
}

void Download()
{
    std::cout << "我是一个下载文件的任务" << std::endl;
}

void Upload()
{
    std::cout << "我是一个上传文件的任务" << std::endl;
}

/////////////////////////////////////////////////////

class TaskManager
{
public:
    TaskManager()
    {
        srand(time(nullptr));
    }

    void Register(task_t t)
    {
        _tasks.push_back(t);
    }

    int Code()
    {
        int code = rand() % _tasks.size();
        return code;
    }

    void Execute(int code)
    {
        if (code < 0 || code >= _tasks.size())
        {
            std::cout << "Invalid task code" << std::endl;
            return;
        }
        _tasks[code]();
    }

    ~TaskManager()
    {
    }

private:
    std::vector<task_t> _tasks;
};